//package com.yunyv.iotudpserve.TCP.listener;
//
//import com.alibaba.fastjson.JSONArray;
//import com.alibaba.fastjson.JSONObject;
//import com.yunyv.iotudpserve.UDP.dto.TCPBo;
//import com.yunyv.iotudpserve.UDP.dto.UDPBo;
//import com.yunyv.iotudpserve.utils.HttpUtil;
//import com.yunyv.iotudpserve.utils.StringUtils;
//import lombok.Data;
//import lombok.NoArgsConstructor;
//import lombok.extern.slf4j.Slf4j;
//import org.slf4j.LoggerFactory;
//import org.springframework.stereotype.Component;
//
//import java.io.*;
//import java.net.ServerSocket;
//import java.net.Socket;
//import java.util.ArrayList;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//import java.util.concurrent.ExecutorService;
//import java.util.concurrent.Executors;
//import java.util.logging.Logger;
//
//import static com.yunyv.iotudpserve.TCP.listener.SocketHandler.register;
//
///********************************************************************************
// ** author： zhangtianhe
// ** date：2024年06月07日 9:54
// ** description&desc：
// *********************************************************************************/
//@Slf4j
//@Data
//@Component
//@NoArgsConstructor
//public class TCPServer {
//    private Integer port = 62011;
//    private boolean started;
//    private ServerSocket serverSocket;
//    // 防止重复创建socket线程链接对象浪费资源
//    private ExecutorService executorService = Executors.newCachedThreadPool();
//
//    public void start(){
//        start(null);
//    }
//
//    public void start(Integer port){
//        log.info("port: {}, {}", this.port, port);
//        try {
//            serverSocket =  new ServerSocket(port == null ? this.port : port);
//            started = true;
//            log.info("Socket服务已启动，占用端口： {}", serverSocket.getLocalPort());
//        } catch (IOException e) {
//            log.error("端口冲突,异常信息：{}", e);
//            System.exit(0);
//        }
//
//
//        while  (true){
//            try {
//                System.out.println("---------------------------------");
//                System.out.println("等待客户端建立TCP连接...");
//                // 2.等待客户端连接，注意该方法为阻塞方法
//                Socket client = serverSocket.accept();
//                System.out.printf("客户端IP：%s%n", client.getInetAddress().getHostAddress());
//                System.out.printf("客户端端口号：%s%n", client.getPort());
//                // 5.接收客户端的数据，需要从客户端Socket中的输入流获取
//                System.out.println("接收到客户端请求：");
//                InputStream is = client.getInputStream();
//                // 为了方便获取字符串内容，可以将以上字节流包装为字符流
//                BufferedReader br = new BufferedReader(new InputStreamReader(is));
////                BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
//                String line;
//                // 一直读取到流结束：TCP是基于流的数据传输，一定要客户端关闭Socket输出流才表示服
////                务端接收IO输入流结束
//                while ((line = br.readLine()) != null) {
//                    String filePath = "deviceInfo.txt";
//                    try (BufferedWriter writer = new BufferedWriter(new FileWriter(filePath))) {
//                        writer.write(line);
//                    } catch (IOException e) {
//                        e.printStackTrace();
//                    }
//                    System.out.println("请求内容为："+line);
//                    List<TCPBo> tcpBos = jiexiIot(line);
//
//                    //http
//                    for (TCPBo tcpBo:tcpBos){
//                        Map<String,String> header = new HashMap<String,String>();
//                        header.put("Content-Type", "application/json");
//                        //请求参数
//                        Map<String,Object> param = new HashMap<String,Object>();
//                        param.put("data",tcpBo);
//                        String paramJson = JSONObject.toJSONString(param);
//
//                        String result =  HttpUtil.postJson("http://127.0.0.1:8086/httpPublish/send",header,paramJson);
//                    }
//                }
//                // 6.双方关闭连接：服务端是关闭客户端socket连接
//                client.close();
//
//            } catch (Exception e) {
//                e.printStackTrace();
//            }
//        }
//    }
//
//    public static void main(String[] args) {
//        Map<String,String> header = new HashMap<String,String>();
//        header.put("Content-Type", "application/x-www-form-urlencoded");
//        header.put("Authorization", "Basic N2VjOTZmYzBhYmQ5ODhhNzM0MzI5OTViNDQ1NWNjMDY6SGRocDJCMHpweU8wOVN3VzYwL3paWS9mZGZKSm0zNW5xZ3BmWTQ2RURLcz0=");
//        //请求参数
//        Map<String,Object> param = new HashMap<String,Object>();
//        param.put("grant_type","client_credentials");
//        String paramJson = JSONObject.toJSONString(param);
//
//        String result =  HttpUtil.postJson("https://ruiyun-uat.crland.com.cn/open/oauth/token",header,paramJson);
//        System.out.println(result);
//    }
//
//    public List<TCPBo> jiexiIot(String srt){
//        List<TCPBo> boList  =new ArrayList<>();
//        String deviceName="";//设备编号
//        String deviceStatus="";//设备状态
//        String devicesGsv="";//设备示值浓度
////        String srt = "#&868968072122089/003/4;MOD:WL136,0;GSV:1,30,%LEL,4;TPV:-20.5,C;PSV:323,Kpa,1;@8AAC";
//        // 截取前十五位
//
//
//        if (srt.length() > 15) {
//            deviceName = srt.substring(0, 15);//设备名称
//            String substring = srt.substring(16);//数据标识
//            System.out.println(deviceName);
//            JSONObject resultJson = JSONObject.parseObject(substring);
//            JSONArray dataJson = resultJson.getJSONArray("sensorDatas");
//            for (int a= 0;a<dataJson.size();a++){
//                JSONObject device = (JSONObject) dataJson.get(a);
//                deviceStatus = device.getString("gas_status");
//                devicesGsv = device.getString("gas_value");
//                TCPBo tcpBo=new TCPBo();
//                tcpBo.setDeviceName(deviceName);
//                tcpBo.setDeviceStatus(deviceStatus);
//                tcpBo.setDevicesGsv(devicesGsv);
//                boList.add(tcpBo);
//            }
//
//            System.out.println(substring);
//        } else {
//            System.out.println("字符串长度不足十五位");
//        }
//
////        String srt ="#&HBS030001001/001/3;DVS:1;GSV:1,0,%LEL,1;NTS:21,0;@74FE";
//        return boList;
//    }
//}
